package inge_soft.gestoriusNuevo.persistence.DAO.abstraction;

import java.util.Date;
import java.util.List;

import inge_soft.gestoriusNuevo.persistence.DAO.Exceptions.Abstraction.GestoriusException;
import inge_soft.gestoriusNuevo.persistence.DAO.Exceptions.Implementation.SolicitudOrganizadorInexistenteException;

import inge_soft.gestoriusNuevo.persistence.entity.implementation.SolicitudOrganizador;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.Usuario;

public interface ISolicitudOrganizadorDAO {

	public void crear(SolicitudOrganizador soliUsu) throws GestoriusException;

	public void modificar(SolicitudOrganizador soliUsu)
			throws GestoriusException;

	public void eliminar(SolicitudOrganizador soliUsu)
			throws GestoriusException;
	
	public SolicitudOrganizador findById(Long idSol)
			throws SolicitudOrganizadorInexistenteException;
	
	public List<SolicitudOrganizador> findAll(int estado)
			throws SolicitudOrganizadorInexistenteException;
	
	public List<SolicitudOrganizador> findAll()
			throws SolicitudOrganizadorInexistenteException;
	
	public List<SolicitudOrganizador> findAll(Date fechaInicio, Date fechaFinal)
			throws SolicitudOrganizadorInexistenteException;
	
	public List<SolicitudOrganizador> findAll(int estado, Date fechaInicio,
			Date fechaFinal) throws SolicitudOrganizadorInexistenteException;

	public boolean tieneSolicitudPendiente(int estado , Usuario user);
}
